design AND analysis of an algorithm